﻿using LiteFramework.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LiteFramework.Contract
{
    public interface IUserContract : IAbsContract<User>
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="isOnline">如果为 true，则更新指定用户的最近活动日期/时间戳。</param>
        /// <returns></returns>
        User GetUser(bool isOnline = false);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="isOnline">如果为 true，则更新指定用户的最近活动日期/时间戳。</param>
        /// <returns></returns>
        User GetUser(string userName, bool isOnline = false);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="type"></param>
        /// <param name="openId"></param>
        /// <param name="isOnline">如果为 true，则更新指定用户的最近活动日期/时间戳。</param>
        /// <returns></returns>
        User GetUserByOpenId(LoginType type, string openId, bool isOnline);

        /// <summary>
        /// 发送活动心跳信号。指示当前用户状态为【在线活动】，必要时可以调用此方法以避免用户长时间未操作数据导致的登陆超时问题
        /// </summary>
        bool HeartBeat();
    }
}